/* image url */
var IMAGE_URL = '/backend/images/';

jQuery.noConflict();

jQuery(function($) {

	/* toggle boxes
	------------------------------------------------------------------------- */
	$('.box > h2').append('<img src="' + IMAGE_URL + 'icons/arrow_state_grey_expanded.png" class="toggle" />');
	$('img.toggle').click(function() {
		$(this).parent().next().slideToggle(200);
	});
	
	/* sortable table rows
	------------------------------------------------------------------------- */
//	var fixHelper = function(e, ui) {
//		ui.children().each(function() {
//			$(this).width($(this).width());
//		});
//		return ui;
//	};
//	$('table.sortable tbody').sortable({
//		handle: 'img.move',
//		helper: fixHelper,
//		placeholder: 'ui-state-highlight',
//		forcePlaceholderSize: true
//	}).disableSelection();

	/* sortable photos
	------------------------------------------------------------------------- */
//	$('ul.sortable').sortable({
//		placeholder: 'ui-state-highlight',
//		forcePlaceholderSize: true
//	});
	
	/* checkall
	------------------------------------------------------------------------- */
	var togel = false;
	$('#table1 .checkall').click(function() {
		$('#table1 :checkbox').attr('checked', !togel);
		togel = !togel;
	});
	var togel2 = false;
	$('#table2 .checkall').click(function() {
		$('#table2 :checkbox').attr('checked', !togel2);
		togel2 = !togel2;
	});

    var togel3 = false;
	$('.data-table .checkall').click(function() {
		$('.data-table :checkbox').attr('checked', !togel3);
		togel3 = !togel3;
	});
	
	/* detail table
	------------------------------------------------------------------------- */
	$('table.detailtable tr.detail').hide();
	$('table.detailtable > tbody > tr:nth-child(4n-3)').addClass('odd');
	$('table.detailtable > tbody > tr:nth-child(4n-1)').removeClass('odd').addClass('even');
	$('a.detail-link').click(function() {
		$(this).parent().parent().next().fadeToggle();
		return false;
	});
	
	/* superfish menu
	------------------------------------------------------------------------- */
	$('ul.sf-menu').superfish({
		delay: 107,
		animation: false,
		dropShadows: false
	});

	/* message boxes
	------------------------------------------------------------------------- */
	$('.msg').click(function() {
		$(this).fadeTo('slow', 0);
		$(this).slideUp(341);
	});

	/* wysiwyg editor
	------------------------------------------------------------------------- */
	$('textarea.wysiwyg').wysiwyg();
	$('#newscontent').wysiwyg();

	/* facebox
	------------------------------------------------------------------------- */
	$('a[rel*=facebox]').facebox();

	/* date picker
	------------------------------------------------------------------------- */
	$.datepicker.regional['ru'] = {
        closeText: 'Закрыть',
        prevText: '<Пред',
        nextText: 'След>',
        currentText: 'Сегодня',
        monthNames: ['января','февраля','марта','апреля','мая','июня',
        'июля','августа','сентября','октября','ноября','декабря'],
        monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
        'Июл','Авг','Сен','Окт','Ноя','Дек'],
        dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
        dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
        dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
        weekHeader: 'Не',
        dateFormat: 'dd.mm.yy',
        firstDay: 1,
        isRTL: false,
        showMonthAfterYear: false,
        yearSuffix: ''
    };
    $.datepicker.setDefaults($.datepicker.regional['ru']);

    $.timepicker.regional['ru'] = {
        timeOnlyTitle: 'Выберите время',
        timeText: 'Время',
        hourText: 'Часы',
        minuteText: 'Минуты',
        secondText: 'Секунды',
        millisecText: 'миллисекунды',
        currentText: 'Сейчас',
        closeText: 'Закрыть',
        ampm: false
    };
    $.timepicker.setDefaults($.timepicker.regional['ru']);

    $('#date_begin').datetimepicker({
        changeMonth:true,
        changeYear:true,
        //dateFormat:'d MM yy',
        dateFormat:'dd.mm.yy',
        //showButtonPanel: false,
        onSelect: function (selectedDateTime){
            var start = $(this).datetimepicker('getDate');
            $('#date_end').datetimepicker('option', 'minDate', new Date(start.getTime()) );
        }
    });
    $('#date_end').datetimepicker({
        changeMonth:true,
        changeYear:true,
        //dateFormat:'d MM yy',
        dateFormat:'dd.mm.yy',
        //showButtonPanel: false,
        onSelect: function (selectedDateTime){
            var end = $(this).datetimepicker('getDate');
            $('#date_begin').datetimepicker('option', 'maxDate', new Date(end.getTime()) );
        }
    });
    
	/* accordion
	------------------------------------------------------------------------- */
	$('.accordion > h3:first-child').addClass('active');
	$('.accordion > div').hide();
	$('.accordion > h3:first-child').next().show();
	$('.accordion > h3').click(function() {
		if ($(this).hasClass('active')) {
			return false;
		}
		$(this).parent().children('h3').removeClass('active');
		$(this).addClass('active');
		$(this).parent().children('div').slideUp(200);
		$(this).next().slideDown(200);
	});

	/* tabs
	------------------------------------------------------------------------- */
	$('.tabcontent > div').hide();
	$('.tabcontent > div:first-child').show();
	$('.tabs > li:first-child').addClass('selected');
	$('.tabs > li a').click(function() {
		var tab_id = $(this).attr('href');
        $(tab_id).parent().children().hide();
		$(tab_id).fadeIn();
		$(this).parent().parent().children().removeClass('selected');
		$(this).parent().addClass('selected');
		return false;
	});

	/* form validation
	------------------------------------------------------------------------- */
	$('#myForm').validate();
	
	/* uniform
	------------------------------------------------------------------------- */
	$('.uniform input[type="checkbox"], .uniform input[type="radio"], .uniform input[type="file"]').uniform();

	/* cufon
	------------------------------------------------------------------------- */
	Cufon.replace('#site-title');
//	Cufon.replace('article > h1');
//	Cufon.replace('article > h2');
//	Cufon.replace('article > h3');
//	Cufon.replace('article > h4');
//	Cufon.replace('article > h5');
//	Cufon.replace('article > h6');

    $('.actions button').click(function() {
        if ($('.actions select').val() == 'Действие:') {
            return false;
        }
    });

});

function LocationViewModel(url) {
    var self = this;
    self.show_region = ko.observable(false);
    self.show_city = ko.observable(false);
    self.show_metro = ko.observable(false);

    self.countries = ko.observableArray([
        {name:'Россия', id:1}
    ]);
    self.selected_country = ko.observable(0);

    self.regions = ko.observableArray();
    self.selected_region = ko.observable(0);

    self.cities = ko.observableArray();
    self.selected_city = ko.observable(0);

    self.metro = ko.observableArray();
    self.selected_metro = ko.observable(0);

    self.load_data = function(location_id, callback) {
        jQuery.ajax({
            url: url + '/' + location_id,
            //type: 'POST',
            dataType: 'JSON',
            success: function(response) {
                callback(jQuery.parseJSON(response).data);
            }
        });
    }

    self.selected_country.subscribe(function() {
        self.selected_region(undefined);
        self.regions([]);
    });

    self.selected_region.subscribe(function() {
        self.selected_city(undefined);
        self.cities([]);
    });

    self.selected_city.subscribe(function() {
        self.selected_metro(undefined);
        self.metro([]);
    });

    self.last_selected_id = ko.computed(function() {
        if (typeof self.selected_metro() !== 'undefined') return self.selected_metro();
        if (typeof self.selected_city() !== 'undefined') return self.selected_city();
        if (typeof self.selected_region() !== 'undefined') return self.selected_region();
        if (typeof self.selected_country() !== 'undefined') return self.selected_country();
        return '';
    });

    ko.computed(function() {
        if (self.selected_country()) {
            self.show_region(true);
            self.load_data(self.selected_country(), function(data) {
                self.regions(data);
            });
        } else {
            self.show_metro(false);
            self.show_city(false);
            self.show_region(false);
        }
    });

    ko.computed(function() {
        if (self.selected_region()) {
            self.show_city(true);
            self.load_data(self.selected_region(), function(data) {
                self.cities(data);
            });
        } else {
            self.show_metro(false);
            self.show_city(false);
        }
    });

    ko.computed(function() {
        if (self.selected_city()) {
            self.show_metro(true);
            self.load_data(self.selected_city(), function(data) {
                self.metro(data);
            });
        } else {
            self.show_metro(false);
        }
    });
}